#!/usr/bin/env python
"""
MySQL连接验证脚本
用于验证Django项目是否正确连接到MySQL数据库
"""

import os
import sys
import django

# 添加项目路径到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 设置Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mybabys.settings')
django.setup()

def test_mysql_connection():
    """测试MySQL数据库连接"""
    try:
        from django.db import connection
        cursor = connection.cursor()
        
        # 测试基本连接
        cursor.execute("SELECT VERSION()")
        version = cursor.fetchone()
        print(f"✅ MySQL连接成功！")
        print(f"📊 MySQL版本: {version[0]}")
        
        # 测试数据库是否存在
        cursor.execute("SHOW DATABASES LIKE 'mybabys'")
        database_exists = cursor.fetchone()
        if database_exists:
            print(f"✅ 数据库 'mybabys' 存在")
        else:
            print(f"❌ 数据库 'mybabys' 不存在")
            return False
        
        # 测试表是否存在
        cursor.execute("USE mybabys")
        cursor.execute("SHOW TABLES")
        tables = cursor.fetchall()
        print(f"📋 数据库中的表数量: {len(tables)}")
        
        if tables:
            print("📋 表列表:")
            for table in tables:
                print(f"   - {table[0]}")
        
        cursor.close()
        return True
        
    except Exception as e:
        print(f"❌ MySQL连接失败: {str(e)}")
        return False

def test_django_models():
    """测试Django模型连接"""
    try:
        from django.db import connection
        from django.apps import apps
        
        # 检查已安装的应用
        installed_apps = apps.get_app_configs()
        print(f"📱 已安装的应用数量: {len(installed_apps)}")
        
        # 测试模型查询
        try:
            from commodity.models import Types
            types_count = Types.objects.count()
            print(f"✅ 商品分类模型连接成功，记录数: {types_count}")
        except Exception as e:
            print(f"⚠️ 商品分类模型连接失败: {str(e)}")
        
        try:
            from commodity.models import CommodityInfos
            commodities_count = CommodityInfos.objects.count()
            print(f"✅ 商品信息模型连接成功，记录数: {commodities_count}")
        except Exception as e:
            print(f"⚠️ 商品信息模型连接失败: {str(e)}")
        
        return True
        
    except Exception as e:
        print(f"❌ Django模型测试失败: {str(e)}")
        return False

def main():
    """主函数"""
    print("🔍 开始验证MySQL数据库连接...")
    print("=" * 50)
    
    # 测试基本连接
    connection_ok = test_mysql_connection()
    
    if connection_ok:
        print("\n🔍 开始验证Django模型...")
        print("=" * 50)
        models_ok = test_django_models()
        
        if models_ok:
            print("\n🎉 所有测试通过！MySQL数据库配置正确。")
        else:
            print("\n⚠️ 模型测试有问题，但数据库连接正常。")
    else:
        print("\n❌ 数据库连接失败，请检查配置。")
        print("\n💡 可能的解决方案:")
        print("1. 确保MySQL服务正在运行")
        print("2. 检查数据库用户名和密码")
        print("3. 确保mybabys数据库存在")
        print("4. 检查MySQL端口是否正确(3306)")

if __name__ == "__main__":
    main() 